/**
 * 格式化日期为本地日期字符串 (e.g., YYYY/MM/DD)
 * @param {string | Date} dateString 日期字符串或日期对象
 * @returns {string} 格式化后的日期或 'N/A'
 */
export const formatDate = (dateString) => {
  if (!dateString) return 'N/A';
  try {
    const date = new Date(dateString);
    // 检查日期是否有效
    if (isNaN(date.getTime())) {
        console.warn("Invalid date string provided to formatDate:", dateString);
        return 'Invalid Date';
    }
    return date.toLocaleDateString();
  } catch(e) {
    console.error("Error formatting date:", e);
    return dateString; // 格式化失败时返回原始字符串
  }
};

/**
 * 格式化日期为本地日期时间字符串 (e.g., YYYY/MM/DD HH:mm:ss)
 * @param {string | Date} dateString 日期字符串或日期对象
 * @returns {string} 格式化后的日期时间或 'N/A'
 */
export const formatDateTime = (dateString) => {
  if (!dateString) return 'N/A';
  try {
    const date = new Date(dateString);
    // 检查日期是否有效
    if (isNaN(date.getTime())) {
        console.warn("Invalid date string provided to formatDateTime:", dateString);
        return 'Invalid Date';
    }
    return date.toLocaleString();
  } catch(e) {
    console.error("Error formatting datetime:", e);
    return dateString; // 格式化失败时返回原始字符串
  }
};

/**
 * 根据班级起止时间计算班级状态
 * @param {string | Date} startDate 开始日期
 * @param {string | Date} endDate 结束日期
 * @returns {Object} 包含状态文本和标签类型的对象
 */
export const getClassStatus = (startDate, endDate) => {
  const now = new Date();
  
  // 如果没有开始时间或结束时间，使用默认状态
  if (!startDate || !endDate) {
    return {
      text: '未设定',
      type: 'info'
    };
  }
  
  try {
    const start = new Date(startDate);
    const end = new Date(endDate);
    
    // 检查日期是否有效
    if (isNaN(start.getTime()) || isNaN(end.getTime())) {
      return {
        text: '日期无效',
        type: 'danger'
      };
    }
    
    // 根据当前时间与开始、结束时间的关系判断状态
    if (now < start) {
      return {
        text: '未开始',
        type: 'info'
      };
    } else if (now >= start && now <= end) {
      return {
        text: '进行中',
        type: 'success'
      };
    } else {
      return {
        text: '已结束',
        type: 'danger'
      };
    }
  } catch (error) {
    console.error("Error calculating class status:", error);
    return {
      text: '状态异常',
      type: 'warning'
    };
  }
}; 